package stream;

import java.util.ArrayList;

/**
 * 常见中间方法
 */
public class MyStream4 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三丰");
        list.add("张无忌");
        list.add("张翠山");
        list.add("王二麻子");
        list.add("张良");
        list.add("谢广坤");
        list.add("谢广坤");
        list.add("谢广坤");
        list.add("谢广坤");
        list.add("谢广坤");

        // Stream<T> limit (long maxsize):截取指定参数个数的数据 截取前面的
        // list.stream().limit(2).forEach(s->System.out.println(s));

        // Stream<T> skip (long n):跳过指定参数个数的数据  截取后面的
        // list.stream().skip(2).forEach(s->System.out.println(s));

        // static<T> stream<T> concat (stream a，stream b):合并a和b两个流为一个流
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("张三丰");
        list2.add("张无忌");
        list2.add("张翠山");
        list2.add("王二麻子");
        list2.add("张良");
        list2.add("谢广坤");
        // Stream<String> stream3 = Stream.concat(list.stream(), list2.stream());

        //Stream.concat(list.stream(), list2.stream()).forEach(s -> System.out.println(s));

        // stream<T> distinct():去除流中重复的元素。依赖(hashcode和equals方法)
//        list.stream().distinct().forEach(s -> System.out.println(s)); // 写法一
         list.stream().distinct().forEach(System.out::println);  // 写法二


    }
}
